package com.yicong.ants.bean.scenic;

import android.view.View;

import com.cchao.simplelib.core.CollectionHelper;
import com.cchao.simplelib.core.UiHelper;
import com.yicong.ants.R;
import com.yicong.ants.manager.UserManager;

import java.util.List;

/**
 * @author cchao
 * @version 2019-07-04.
 */
public class ScenicDetailBean {

    public ScenicDetailBean() {
    }

    public String getScenic_id() {
        return this.scenic_id;
    }

    public String getGate_project_id() {
        return this.gate_project_id;
    }

    public String getName() {
        return this.name;
    }

    public String getShort_description() {
        return this.short_description;
    }

    public String getThumbnail() {
        return this.thumbnail;
    }

    public String getImage() {
        return this.image;
    }

    public String getSound() {
        return this.sound;
    }

    public String getTelephone() {
        return this.telephone;
    }

    public String getAddress() {
        return this.address;
    }

    public String getStatus() {
        return this.status;
    }

    public String getTraffic() {
        return this.traffic;
    }

    public String getPrice() {
        return this.price;
    }

    public String getServices() {
        return this.services;
    }

    public String getScenic_type() {
        return this.scenic_type;
    }

    public String getTicket() {
        return this.ticket;
    }

    public String getSeason() {
        return this.season;
    }

    public String getNotice() {
        return this.notice;
    }

    public String getIntroduction() {
        return this.introduction;
    }

    public String getDetail() {
        return this.detail;
    }

    public String getOpen() {
        return this.open;
    }

    public String getLong_title() {
        return this.long_title;
    }

    public String getShort_title() {
        return this.short_title;
    }

    public String getVr_url() {
        return this.vr_url;
    }

    public String getSpecial_advance() {
        return this.special_advance;
    }

    public String getLongitude() {
        return this.longitude;
    }

    public String getLatitude() {
        return this.latitude;
    }

    public String getLevel_name() {
        return this.level_name;
    }

    public int getAdvance() {
        return this.advance;
    }

    public String getAdvance_start_date() {
        return this.advance_start_date;
    }

    public String getAdvance_end_date() {
        return this.advance_end_date;
    }

    public String getCate_name() {
        return this.cate_name;
    }

    public String getRemark_title() {
        return this.remark_title;
    }

    public int getStock() {
        return this.stock;
    }

    public int getIs_collect() {
        return this.is_collect;
    }

    public int getIs_qrcode() {
        return this.is_qrcode;
    }

    public int getIs_play() {
        return this.is_play;
    }

    public int getIs_buy() {
        return this.is_buy;
    }

    public int getHave_bonus() {
        return this.have_bonus;
    }

    public int getCharge_scenic() {
        return this.charge_scenic;
    }

    public String getActual_price() {
        return this.actual_price;
    }

    public float getCoupon() {
        return this.coupon;
    }

    public float getTrial_card_price() {
        return this.trial_card_price;
    }

    public String getIs_play_msg() {
        return this.is_play_msg;
    }

    public List<Integer> getPassport_types() {
        return this.passport_types;
    }

    public List<String> getRemark_value() {
        return this.remark_value;
    }

    public List<WeatherBean2> getWeather() {
        return this.weather;
    }

    public List<AddedItem> getAdded_projects() {
        return this.added_projects;
    }

    public String getTarget_url() {
        return this.target_url;
    }

    public String getTicket_name() {
        return this.ticket_name;
    }

    public String getOpen_time() {
        return this.open_time;
    }

    public String getContained_items() {
        return this.contained_items;
    }

    public float getCoin() {
        return this.coin;
    }

    public void setScenic_id(String scenic_id) {
        this.scenic_id = scenic_id;
    }

    public void setGate_project_id(String gate_project_id) {
        this.gate_project_id = gate_project_id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setShort_description(String short_description) {
        this.short_description = short_description;
    }

    public void setThumbnail(String thumbnail) {
        this.thumbnail = thumbnail;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public void setSound(String sound) {
        this.sound = sound;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public void setTraffic(String traffic) {
        this.traffic = traffic;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public void setServices(String services) {
        this.services = services;
    }

    public void setScenic_type(String scenic_type) {
        this.scenic_type = scenic_type;
    }

    public void setTicket(String ticket) {
        this.ticket = ticket;
    }

    public void setSeason(String season) {
        this.season = season;
    }

    public void setNotice(String notice) {
        this.notice = notice;
    }

    public void setIntroduction(String introduction) {
        this.introduction = introduction;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    public void setOpen(String open) {
        this.open = open;
    }

    public void setLong_title(String long_title) {
        this.long_title = long_title;
    }

    public void setShort_title(String short_title) {
        this.short_title = short_title;
    }

    public void setVr_url(String vr_url) {
        this.vr_url = vr_url;
    }

    public void setSpecial_advance(String special_advance) {
        this.special_advance = special_advance;
    }

    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }

    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }

    public void setLevel_name(String level_name) {
        this.level_name = level_name;
    }

    public void setLevel_name_short(String level_name_short) {
        this.level_name_short = level_name_short;
    }

    public void setAdvance(int advance) {
        this.advance = advance;
    }

    public void setAdvance_start_date(String advance_start_date) {
        this.advance_start_date = advance_start_date;
    }

    public void setAdvance_end_date(String advance_end_date) {
        this.advance_end_date = advance_end_date;
    }

    public void setCate_name(String cate_name) {
        this.cate_name = cate_name;
    }

    public void setRemark_title(String remark_title) {
        this.remark_title = remark_title;
    }

    public void setStock(int stock) {
        this.stock = stock;
    }

    public void setIs_collect(int is_collect) {
        this.is_collect = is_collect;
    }

    public void setIs_qrcode(int is_qrcode) {
        this.is_qrcode = is_qrcode;
    }

    public void setIs_play(int is_play) {
        this.is_play = is_play;
    }

    public void setIs_buy(int is_buy) {
        this.is_buy = is_buy;
    }

    public void setHave_bonus(int have_bonus) {
        this.have_bonus = have_bonus;
    }

    public void setCharge_scenic(int charge_scenic) {
        this.charge_scenic = charge_scenic;
    }

    public void setActual_price(String actual_price) {
        this.actual_price = actual_price;
    }

    public void setCoupon(float coupon) {
        this.coupon = coupon;
    }

    public void setTrial_card_price(float trial_card_price) {
        this.trial_card_price = trial_card_price;
    }

    public void setOriginalPriceVisible(int originalPriceVisible) {
        this.originalPriceVisible = originalPriceVisible;
    }

    public void setIs_play_msg(String is_play_msg) {
        this.is_play_msg = is_play_msg;
    }

    public void setPassport_types(List<Integer> passport_types) {
        this.passport_types = passport_types;
    }

    public void setPassport_type(int passport_type) {
        this.passport_type = passport_type;
    }

    public void setRemark_value(List<String> remark_value) {
        this.remark_value = remark_value;
    }

    public void setWeather(List<WeatherBean2> weather) {
        this.weather = weather;
    }

    public void setAdded_projects(List<AddedItem> added_projects) {
        this.added_projects = added_projects;
    }

    public void setTarget_url(String target_url) {
        this.target_url = target_url;
    }

    public void setTicket_name(String ticket_name) {
        this.ticket_name = ticket_name;
    }

    public void setOpen_time(String open_time) {
        this.open_time = open_time;
    }

    public void setContained_items(String contained_items) {
        this.contained_items = contained_items;
    }

    public void setCoin(float coin) {
        this.coin = coin;
    }

    public boolean equals(final Object o) {
        if (o == this) return true;
        if (!(o instanceof ScenicDetailBean)) return false;
        final ScenicDetailBean other = (ScenicDetailBean) o;
        if (!other.canEqual((Object) this)) return false;
        final Object this$scenic_id = this.getScenic_id();
        final Object other$scenic_id = other.getScenic_id();
        if (this$scenic_id == null ? other$scenic_id != null : !this$scenic_id.equals(other$scenic_id))
            return false;
        final Object this$gate_project_id = this.getGate_project_id();
        final Object other$gate_project_id = other.getGate_project_id();
        if (this$gate_project_id == null ? other$gate_project_id != null : !this$gate_project_id.equals(other$gate_project_id))
            return false;
        final Object this$name = this.getName();
        final Object other$name = other.getName();
        if (this$name == null ? other$name != null : !this$name.equals(other$name)) return false;
        final Object this$short_description = this.getShort_description();
        final Object other$short_description = other.getShort_description();
        if (this$short_description == null ? other$short_description != null : !this$short_description.equals(other$short_description))
            return false;
        final Object this$thumbnail = this.getThumbnail();
        final Object other$thumbnail = other.getThumbnail();
        if (this$thumbnail == null ? other$thumbnail != null : !this$thumbnail.equals(other$thumbnail))
            return false;
        final Object this$image = this.getImage();
        final Object other$image = other.getImage();
        if (this$image == null ? other$image != null : !this$image.equals(other$image))
            return false;
        final Object this$sound = this.getSound();
        final Object other$sound = other.getSound();
        if (this$sound == null ? other$sound != null : !this$sound.equals(other$sound))
            return false;
        final Object this$telephone = this.getTelephone();
        final Object other$telephone = other.getTelephone();
        if (this$telephone == null ? other$telephone != null : !this$telephone.equals(other$telephone))
            return false;
        final Object this$address = this.getAddress();
        final Object other$address = other.getAddress();
        if (this$address == null ? other$address != null : !this$address.equals(other$address))
            return false;
        final Object this$status = this.getStatus();
        final Object other$status = other.getStatus();
        if (this$status == null ? other$status != null : !this$status.equals(other$status))
            return false;
        final Object this$traffic = this.getTraffic();
        final Object other$traffic = other.getTraffic();
        if (this$traffic == null ? other$traffic != null : !this$traffic.equals(other$traffic))
            return false;
        final Object this$price = this.getPrice();
        final Object other$price = other.getPrice();
        if (this$price == null ? other$price != null : !this$price.equals(other$price))
            return false;
        final Object this$services = this.getServices();
        final Object other$services = other.getServices();
        if (this$services == null ? other$services != null : !this$services.equals(other$services))
            return false;
        final Object this$scenic_type = this.getScenic_type();
        final Object other$scenic_type = other.getScenic_type();
        if (this$scenic_type == null ? other$scenic_type != null : !this$scenic_type.equals(other$scenic_type))
            return false;
        final Object this$ticket = this.getTicket();
        final Object other$ticket = other.getTicket();
        if (this$ticket == null ? other$ticket != null : !this$ticket.equals(other$ticket))
            return false;
        final Object this$season = this.getSeason();
        final Object other$season = other.getSeason();
        if (this$season == null ? other$season != null : !this$season.equals(other$season))
            return false;
        final Object this$notice = this.getNotice();
        final Object other$notice = other.getNotice();
        if (this$notice == null ? other$notice != null : !this$notice.equals(other$notice))
            return false;
        final Object this$introduction = this.getIntroduction();
        final Object other$introduction = other.getIntroduction();
        if (this$introduction == null ? other$introduction != null : !this$introduction.equals(other$introduction))
            return false;
        final Object this$detail = this.getDetail();
        final Object other$detail = other.getDetail();
        if (this$detail == null ? other$detail != null : !this$detail.equals(other$detail))
            return false;
        final Object this$open = this.getOpen();
        final Object other$open = other.getOpen();
        if (this$open == null ? other$open != null : !this$open.equals(other$open)) return false;
        final Object this$long_title = this.getLong_title();
        final Object other$long_title = other.getLong_title();
        if (this$long_title == null ? other$long_title != null : !this$long_title.equals(other$long_title))
            return false;
        final Object this$short_title = this.getShort_title();
        final Object other$short_title = other.getShort_title();
        if (this$short_title == null ? other$short_title != null : !this$short_title.equals(other$short_title))
            return false;
        final Object this$vr_url = this.getVr_url();
        final Object other$vr_url = other.getVr_url();
        if (this$vr_url == null ? other$vr_url != null : !this$vr_url.equals(other$vr_url))
            return false;
        final Object this$special_advance = this.getSpecial_advance();
        final Object other$special_advance = other.getSpecial_advance();
        if (this$special_advance == null ? other$special_advance != null : !this$special_advance.equals(other$special_advance))
            return false;
        final Object this$longitude = this.getLongitude();
        final Object other$longitude = other.getLongitude();
        if (this$longitude == null ? other$longitude != null : !this$longitude.equals(other$longitude))
            return false;
        final Object this$latitude = this.getLatitude();
        final Object other$latitude = other.getLatitude();
        if (this$latitude == null ? other$latitude != null : !this$latitude.equals(other$latitude))
            return false;
        final Object this$level_name = this.getLevel_name();
        final Object other$level_name = other.getLevel_name();
        if (this$level_name == null ? other$level_name != null : !this$level_name.equals(other$level_name))
            return false;
        final Object this$level_name_short = this.getLevel_name_short();
        final Object other$level_name_short = other.getLevel_name_short();
        if (this$level_name_short == null ? other$level_name_short != null : !this$level_name_short.equals(other$level_name_short))
            return false;
        if (this.getAdvance() != other.getAdvance()) return false;
        final Object this$advance_start_date = this.getAdvance_start_date();
        final Object other$advance_start_date = other.getAdvance_start_date();
        if (this$advance_start_date == null ? other$advance_start_date != null : !this$advance_start_date.equals(other$advance_start_date))
            return false;
        final Object this$advance_end_date = this.getAdvance_end_date();
        final Object other$advance_end_date = other.getAdvance_end_date();
        if (this$advance_end_date == null ? other$advance_end_date != null : !this$advance_end_date.equals(other$advance_end_date))
            return false;
        final Object this$cate_name = this.getCate_name();
        final Object other$cate_name = other.getCate_name();
        if (this$cate_name == null ? other$cate_name != null : !this$cate_name.equals(other$cate_name))
            return false;
        final Object this$remark_title = this.getRemark_title();
        final Object other$remark_title = other.getRemark_title();
        if (this$remark_title == null ? other$remark_title != null : !this$remark_title.equals(other$remark_title))
            return false;
        if (this.getStock() != other.getStock()) return false;
        if (this.getIs_collect() != other.getIs_collect()) return false;
        if (this.getIs_qrcode() != other.getIs_qrcode()) return false;
        if (this.getIs_play() != other.getIs_play()) return false;
        if (this.getIs_buy() != other.getIs_buy()) return false;
        if (this.getHave_bonus() != other.getHave_bonus()) return false;
        if (this.getCharge_scenic() != other.getCharge_scenic()) return false;
        final Object this$actual_price = this.getActual_price();
        final Object other$actual_price = other.getActual_price();
        if (this$actual_price == null ? other$actual_price != null : !this$actual_price.equals(other$actual_price))
            return false;
        if (Float.compare(this.getCoupon(), other.getCoupon()) != 0) return false;
        if (Float.compare(this.getTrial_card_price(), other.getTrial_card_price()) != 0)
            return false;
        if (this.getOriginalPriceVisible() != other.getOriginalPriceVisible()) return false;
        final Object this$is_play_msg = this.getIs_play_msg();
        final Object other$is_play_msg = other.getIs_play_msg();
        if (this$is_play_msg == null ? other$is_play_msg != null : !this$is_play_msg.equals(other$is_play_msg))
            return false;
        final Object this$passport_types = this.getPassport_types();
        final Object other$passport_types = other.getPassport_types();
        if (this$passport_types == null ? other$passport_types != null : !this$passport_types.equals(other$passport_types))
            return false;
        if (this.getPassport_type() != other.getPassport_type()) return false;
        final Object this$remark_value = this.getRemark_value();
        final Object other$remark_value = other.getRemark_value();
        if (this$remark_value == null ? other$remark_value != null : !this$remark_value.equals(other$remark_value))
            return false;
        final Object this$weather = this.getWeather();
        final Object other$weather = other.getWeather();
        if (this$weather == null ? other$weather != null : !this$weather.equals(other$weather))
            return false;
        final Object this$added_projects = this.getAdded_projects();
        final Object other$added_projects = other.getAdded_projects();
        if (this$added_projects == null ? other$added_projects != null : !this$added_projects.equals(other$added_projects))
            return false;
        final Object this$target_url = this.getTarget_url();
        final Object other$target_url = other.getTarget_url();
        if (this$target_url == null ? other$target_url != null : !this$target_url.equals(other$target_url))
            return false;
        final Object this$ticket_name = this.getTicket_name();
        final Object other$ticket_name = other.getTicket_name();
        if (this$ticket_name == null ? other$ticket_name != null : !this$ticket_name.equals(other$ticket_name))
            return false;
        final Object this$open_time = this.getOpen_time();
        final Object other$open_time = other.getOpen_time();
        if (this$open_time == null ? other$open_time != null : !this$open_time.equals(other$open_time))
            return false;
        final Object this$contained_items = this.getContained_items();
        final Object other$contained_items = other.getContained_items();
        if (this$contained_items == null ? other$contained_items != null : !this$contained_items.equals(other$contained_items))
            return false;
        if (Float.compare(this.getCoin(), other.getCoin()) != 0) return false;
        return true;
    }

    protected boolean canEqual(final Object other) {
        return other instanceof ScenicDetailBean;
    }

    public int hashCode() {
        final int PRIME = 59;
        int result = 1;
        final Object $scenic_id = this.getScenic_id();
        result = result * PRIME + ($scenic_id == null ? 43 : $scenic_id.hashCode());
        final Object $gate_project_id = this.getGate_project_id();
        result = result * PRIME + ($gate_project_id == null ? 43 : $gate_project_id.hashCode());
        final Object $name = this.getName();
        result = result * PRIME + ($name == null ? 43 : $name.hashCode());
        final Object $short_description = this.getShort_description();
        result = result * PRIME + ($short_description == null ? 43 : $short_description.hashCode());
        final Object $thumbnail = this.getThumbnail();
        result = result * PRIME + ($thumbnail == null ? 43 : $thumbnail.hashCode());
        final Object $image = this.getImage();
        result = result * PRIME + ($image == null ? 43 : $image.hashCode());
        final Object $sound = this.getSound();
        result = result * PRIME + ($sound == null ? 43 : $sound.hashCode());
        final Object $telephone = this.getTelephone();
        result = result * PRIME + ($telephone == null ? 43 : $telephone.hashCode());
        final Object $address = this.getAddress();
        result = result * PRIME + ($address == null ? 43 : $address.hashCode());
        final Object $status = this.getStatus();
        result = result * PRIME + ($status == null ? 43 : $status.hashCode());
        final Object $traffic = this.getTraffic();
        result = result * PRIME + ($traffic == null ? 43 : $traffic.hashCode());
        final Object $price = this.getPrice();
        result = result * PRIME + ($price == null ? 43 : $price.hashCode());
        final Object $services = this.getServices();
        result = result * PRIME + ($services == null ? 43 : $services.hashCode());
        final Object $scenic_type = this.getScenic_type();
        result = result * PRIME + ($scenic_type == null ? 43 : $scenic_type.hashCode());
        final Object $ticket = this.getTicket();
        result = result * PRIME + ($ticket == null ? 43 : $ticket.hashCode());
        final Object $season = this.getSeason();
        result = result * PRIME + ($season == null ? 43 : $season.hashCode());
        final Object $notice = this.getNotice();
        result = result * PRIME + ($notice == null ? 43 : $notice.hashCode());
        final Object $introduction = this.getIntroduction();
        result = result * PRIME + ($introduction == null ? 43 : $introduction.hashCode());
        final Object $detail = this.getDetail();
        result = result * PRIME + ($detail == null ? 43 : $detail.hashCode());
        final Object $open = this.getOpen();
        result = result * PRIME + ($open == null ? 43 : $open.hashCode());
        final Object $long_title = this.getLong_title();
        result = result * PRIME + ($long_title == null ? 43 : $long_title.hashCode());
        final Object $short_title = this.getShort_title();
        result = result * PRIME + ($short_title == null ? 43 : $short_title.hashCode());
        final Object $vr_url = this.getVr_url();
        result = result * PRIME + ($vr_url == null ? 43 : $vr_url.hashCode());
        final Object $special_advance = this.getSpecial_advance();
        result = result * PRIME + ($special_advance == null ? 43 : $special_advance.hashCode());
        final Object $longitude = this.getLongitude();
        result = result * PRIME + ($longitude == null ? 43 : $longitude.hashCode());
        final Object $latitude = this.getLatitude();
        result = result * PRIME + ($latitude == null ? 43 : $latitude.hashCode());
        final Object $level_name = this.getLevel_name();
        result = result * PRIME + ($level_name == null ? 43 : $level_name.hashCode());
        final Object $level_name_short = this.getLevel_name_short();
        result = result * PRIME + ($level_name_short == null ? 43 : $level_name_short.hashCode());
        result = result * PRIME + this.getAdvance();
        final Object $advance_start_date = this.getAdvance_start_date();
        result = result * PRIME + ($advance_start_date == null ? 43 : $advance_start_date.hashCode());
        final Object $advance_end_date = this.getAdvance_end_date();
        result = result * PRIME + ($advance_end_date == null ? 43 : $advance_end_date.hashCode());
        final Object $cate_name = this.getCate_name();
        result = result * PRIME + ($cate_name == null ? 43 : $cate_name.hashCode());
        final Object $remark_title = this.getRemark_title();
        result = result * PRIME + ($remark_title == null ? 43 : $remark_title.hashCode());
        result = result * PRIME + this.getStock();
        result = result * PRIME + this.getIs_collect();
        result = result * PRIME + this.getIs_qrcode();
        result = result * PRIME + this.getIs_play();
        result = result * PRIME + this.getIs_buy();
        result = result * PRIME + this.getHave_bonus();
        result = result * PRIME + this.getCharge_scenic();
        final Object $actual_price = this.getActual_price();
        result = result * PRIME + ($actual_price == null ? 43 : $actual_price.hashCode());
        result = result * PRIME + Float.floatToIntBits(this.getCoupon());
        result = result * PRIME + Float.floatToIntBits(this.getTrial_card_price());
        result = result * PRIME + this.getOriginalPriceVisible();
        final Object $is_play_msg = this.getIs_play_msg();
        result = result * PRIME + ($is_play_msg == null ? 43 : $is_play_msg.hashCode());
        final Object $passport_types = this.getPassport_types();
        result = result * PRIME + ($passport_types == null ? 43 : $passport_types.hashCode());
        result = result * PRIME + this.getPassport_type();
        final Object $remark_value = this.getRemark_value();
        result = result * PRIME + ($remark_value == null ? 43 : $remark_value.hashCode());
        final Object $weather = this.getWeather();
        result = result * PRIME + ($weather == null ? 43 : $weather.hashCode());
        final Object $added_projects = this.getAdded_projects();
        result = result * PRIME + ($added_projects == null ? 43 : $added_projects.hashCode());
        final Object $target_url = this.getTarget_url();
        result = result * PRIME + ($target_url == null ? 43 : $target_url.hashCode());
        final Object $ticket_name = this.getTicket_name();
        result = result * PRIME + ($ticket_name == null ? 43 : $ticket_name.hashCode());
        final Object $open_time = this.getOpen_time();
        result = result * PRIME + ($open_time == null ? 43 : $open_time.hashCode());
        final Object $contained_items = this.getContained_items();
        result = result * PRIME + ($contained_items == null ? 43 : $contained_items.hashCode());
        result = result * PRIME + Float.floatToIntBits(this.getCoin());
        return result;
    }

    public String toString() {
        return "ScenicDetailBean(scenic_id=" + this.getScenic_id() + ", gate_project_id=" + this.getGate_project_id() + ", name=" + this.getName() + ", short_description=" + this.getShort_description() + ", thumbnail=" + this.getThumbnail() + ", image=" + this.getImage() + ", sound=" + this.getSound() + ", telephone=" + this.getTelephone() + ", address=" + this.getAddress() + ", status=" + this.getStatus() + ", traffic=" + this.getTraffic() + ", price=" + this.getPrice() + ", services=" + this.getServices() + ", scenic_type=" + this.getScenic_type() + ", ticket=" + this.getTicket() + ", season=" + this.getSeason() + ", notice=" + this.getNotice() + ", introduction=" + this.getIntroduction() + ", detail=" + this.getDetail() + ", open=" + this.getOpen() + ", long_title=" + this.getLong_title() + ", short_title=" + this.getShort_title() + ", vr_url=" + this.getVr_url() + ", special_advance=" + this.getSpecial_advance() + ", longitude=" + this.getLongitude() + ", latitude=" + this.getLatitude() + ", level_name=" + this.getLevel_name() + ", level_name_short=" + this.getLevel_name_short() + ", advance=" + this.getAdvance() + ", advance_start_date=" + this.getAdvance_start_date() + ", advance_end_date=" + this.getAdvance_end_date() + ", cate_name=" + this.getCate_name() + ", remark_title=" + this.getRemark_title() + ", stock=" + this.getStock() + ", is_collect=" + this.getIs_collect() + ", is_qrcode=" + this.getIs_qrcode() + ", is_play=" + this.getIs_play() + ", is_buy=" + this.getIs_buy() + ", have_bonus=" + this.getHave_bonus() + ", charge_scenic=" + this.getCharge_scenic() + ", actual_price=" + this.getActual_price() + ", coupon=" + this.getCoupon() + ", trial_card_price=" + this.getTrial_card_price() + ", originalPriceVisible=" + this.getOriginalPriceVisible() + ", is_play_msg=" + this.getIs_play_msg() + ", passport_types=" + this.getPassport_types() + ", passport_type=" + this.getPassport_type() + ", remark_value=" + this.getRemark_value() + ", weather=" + this.getWeather() + ", added_projects=" + this.getAdded_projects() + ", target_url=" + this.getTarget_url() + ", ticket_name=" + this.getTicket_name() + ", open_time=" + this.getOpen_time() + ", contained_items=" + this.getContained_items() + ", coin=" + this.getCoin() + ")";
    }

    public interface Type {
        int Appoint = 1000;
        int ShowQrCode = 1200;
        // 特惠票
        int Charge = 1300;
        // 特价 9.9
        int SpecialOffer = 1400;
    }

    /**
     * scenic_id : 705
     * name : 神农架景区
     * short_description : 神农架雄踞秦巴山脉东端
     * thumbnail : http://zslyadmin.yytxlyw.com/Uploads/Picture/2019-01-23/77975f72238.jpg
     * image : http://zslyadmin.yytxlyw.com/Uploads/Picture/2017-03-28/58da20b75f487.jpg
     * sound :
     * telephone :
     * address : 湖北省神农架林区红坪镇
     * status : 1
     * traffic : 自驾路线
     * price : 130.00
     * services : 神农架有野人吗？据不完全统计，自上世纪初来，这里已有近400多人在不同地方不同程度地看到近100多个“野人”活体。神农架可能有“野人”，有四方面的依据：一是史书有记载。《山海经．海内南经》
     * <p>
     * season : 四季适宜
     * notice : 1、自费项目：所有入景区游玩的客人需在神农架旅游集散中心乘环保车入园，90元/人自理。
     * <p>
     * open : 4月～10月：06:30～17:30开放，15:00停止入园；
     * 10月～4月：08:30～17:30开放，15:00停止入园；
     * long_title : 中国唯一以“林区”命名的行政区划
     * short_title : 神农架旅游区
     * vr_url : http://baike.baidu.com/link?url=CgCqjns9G68bOHavsm8o6q3HZG6aZXykV5PgkOblchCzHKD5iygnrOH-zCTDDFqF0WTRiSkwdy-CG9W-pJuUgWtOWhisbRrcFBOXuU4nEmQ5523Ji-zZsKyt2y-s4XsGmP072WD-JNfhx0f9VaMjtWrOliXIdDURnA3xCqPrDoiq5P97hdRp7-icW8xr5nAr4alzdyscc-Y2mJ9Pkba2H_
     * advance_end_date : 2019-03-25
     * special_advance : 2
     * longitude : 110.463918
     * latitude : 31.663737
     * level_name : 5A级景区
     * advance : 1
     * passport_types : [2]
     * advance_start_date : 2019-03-15
     * remark_title : 游玩景点
     * remark_value : ["神农顶","大九湖","官门山","天生桥","神农坛","天燕景区"]
     * is_collect : 0
     * is_qrcode : 0
     * is_play : 0
     * is_play_msg :
     */

    String scenic_id;
    String gate_project_id;
    String name;
    String short_description;
    String thumbnail;
    String image;
    String sound;
    String telephone;
    String address;
    String status;
    String traffic;
    String price;
    String services;
    String scenic_type;
    String ticket;
    String season;
    String notice;
    String introduction;
    String detail;
    String open;
    String long_title;
    String short_title;
    String vr_url;
    // 1：无需预约  2：需要预约
    String special_advance;
    String longitude;
    String latitude;
    String level_name;
    String level_name_short;
    // 是否可预约(0:不可预约  1:可预约)
    int advance;
    String advance_start_date;
    String advance_end_date;

    String cate_name;
    String remark_title;
    // 库存
    int stock;
    int is_collect;
    // 是否显示入园二维码（0：不显示，1：显示）
    int is_qrcode;
    // 此会员是否已游玩过（0：未游玩，1：已游玩）
    int is_play;
    // 是否购买
    int is_buy;
    int have_bonus;
    // 特惠景区
    int charge_scenic;
    String actual_price;
    float coupon;
    // 体验卡 预约景区
    float trial_card_price;
    int originalPriceVisible = View.GONE;

    // 已游玩过的提示（若is_play为0，此值为空）
    String is_play_msg;
    List<Integer> passport_types;
    int passport_type;
    List<String> remark_value;
    List<WeatherBean2> weather;
    List<AddedItem> added_projects;

    String target_url;
    String ticket_name;
    String open_time;           // 开放时间
    String contained_items;     // 包含项目
    // 是否可以预约景区，如果不行就需要购买预约景区
    float coin;

    public int getOriginalPriceVisible() {
        originalPriceVisible = charge_scenic == 1 || (isSpecialOffer() && Float.parseFloat(price) != 0)
            ? View.VISIBLE : View.GONE;
        return originalPriceVisible;
    }

    public String getScenicType() {
        return scenic_type;
    }

    public int getType() {
        if (isSpecialOffer()) {
            return Type.SpecialOffer;
        }

        if (charge_scenic == 1) {
            return Type.Charge;
        }

        boolean mNeedShowQrCode = is_qrcode == 1;
        boolean mNeedAppoint = advance == 1;
        boolean hasPlay = is_play == 1;

        // 需要预约
        if (mNeedAppoint) {
            return Type.Appoint;
        }

        // 显示二维码
        if (mNeedShowQrCode && !hasPlay) {
            return Type.ShowQrCode;
        }

        UiHelper.showToast(R.string.no_reservation_required);

        return -1;
    }

    /* 特价  未绑卡并且免预约景区，且非特惠景区 可以 9.9 购买*/
    boolean isSpecialOffer() {
        return UserManager.notBindCard() && advance == 0 && charge_scenic == 0;
    }

    public boolean isCanAppointNow() {
        return UserManager.getUserBean().getCard_type() >= 20;
    }

    public int getPassport_type() {
        if (CollectionHelper.isEmpty(passport_types)) {
            return 0;
        }

        if (passport_types.size() == 2) {
            return 12;
        }

        return passport_types.get(0);
    }

    public String getLevel_name_short() {
        if (level_name.contains("A级景区")) {
            return level_name.replace("级景区", "");
        }
        return level_name_short;
    }
}
